package cn.iocoder.yudao.module.eval.controller.admin.candidate.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.*;

@Schema(description = "管理后台 - 参评人员信息新增/修改 Request VO")
@Data
public class EvalCandidateInfoSaveReqVO {

    @Schema(description = "主键ID", example = "1024")
    private Long id;

    @Schema(description = "计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "计划ID不能为空")
    private Long planId;

    @Schema(description = "参评人员ID", example = "1")
    private Long candidateId;

    @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @NotEmpty(message = "姓名不能为空")
    @Size(max = 50, message = "姓名长度不能超过50个字符")
    private String name;

    @Schema(description = "身份证号", requiredMode = Schema.RequiredMode.REQUIRED, example = "440123199001010001")
    @NotEmpty(message = "身份证号不能为空")
    @Size(max = 18, message = "身份证号长度不能超过18个字符")
    private String idNumber;

    @Schema(description = "手机号", example = "13800138000")
    @Size(max = 20, message = "手机号长度不能超过20个字符")
    private String mobile;

    @Schema(description = "邮箱", example = "test@example.com")
    @Email(message = "邮箱格式不正确")
    @Size(max = 100, message = "邮箱长度不能超过100个字符")
    private String email;

    @Schema(description = "性别", example = "1")
    private Integer gender;

    @Schema(description = "出生日期", example = "1990-01-01")
    private java.time.LocalDate birthDate;

    @Schema(description = "工作单位", example = "某某公司")
    @Size(max = 200, message = "工作单位长度不能超过200个字符")
    private String workUnit;

    @Schema(description = "部门", example = "技术部")
    @Size(max = 100, message = "部门长度不能超过100个字符")
    private String department;

    @Schema(description = "职位", example = "工程师")
    @Size(max = 100, message = "职位长度不能超过100个字符")
    private String position;

    @Schema(description = "工作年限", example = "5.5")
    private java.math.BigDecimal workYears;

    @Schema(description = "申报等级", requiredMode = Schema.RequiredMode.REQUIRED, example = "四级")
    @NotEmpty(message = "申报等级不能为空")
    @Size(max = 10, message = "申报等级长度不能超过10个字符")
    private String appliedLevel;

    @Schema(description = "申报职业", example = "软件工程师")
    @Size(max = 100, message = "申报职业长度不能超过100个字符")
    private String appliedProfession;

    @Schema(description = "导入批次ID", example = "BATCH001")
    private String importBatchId;

    @Schema(description = "数据来源", example = "1")
    private Integer dataSource;

    @Schema(description = "报名状态", example = "1")
    private Integer registrationStatus;

    @Schema(description = "报名时间")
    private java.time.LocalDateTime registrationTime;

    @Schema(description = "确认时间")
    private java.time.LocalDateTime confirmationTime;

    @Schema(description = "备注信息", example = "备注")
    @Size(max = 500, message = "备注信息长度不能超过500个字符")
    private String remarks;

}